home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / DMTDEMOS / GETDPB.DEM < prev    next >
Text File  |  1994-07-02  |  2KB  |  69 lines

  1. program GetDPBSample;
  2.  
  3.  uses crt, DMT;
  4.  
  5.  var
  6.    DPBbuffer : ^DPBstruct;   { The DPBstruct data type is defined in the DMT unit }
  7.  
  8.    IOError   : word;
  9.  
  10.    DrvLetter : char;
  11.  
  12. begin
  13.   Color( 7, 0 );
  14.   clrscr;
  15.  
  16.   write( 'Select drive to check ( A-Z ) [ :]');
  17.   gotoxy( wherex - 3, wherey );
  18.   DrvLetter := upcase( readkey );
  19.   writeln( DrvLetter );
  20.  
  21.   DPBbuffer := GetDPB( DrvLetter );    { Call GetDPB function }
  22.  
  23.   if ( ErrFlag ) then
  24.     begin
  25.       writeln( #7 );
  26.       writeln( ShowError( GetErrCode ) );
  27.     end
  28.   else
  29.     with DPBbuffer^ do
  30.       begin
  31.         clrscr;
  32.         writeln( '      DRIVE PARAMETER BLOCK (DPB) ');
  33.         writeln;
  34.         writeln( 'Drive Specified                : ', DrvLetter  );
  35.         writeln( 'Physical drive number          : ', DriveNumber );
  36.         writeln( 'Device Driver unit number      : ', UnitNumber );
  37.         writeln( 'Sector size in bytes           : ', BytesPerSect );
  38.         writeln( 'Sectors per cluster            : ', SectsPerClust + 1 );
  39.         writeln( 'First FAT sector               : ', FirstFATSect );
  40.         writeln( 'Number of FATs                 : ', NumOfFATs );
  41.         writeln( 'Maximum root-directory entries : ', MaxRootEntries );
  42.         writeln( 'First data sector              : ', FirstSect );
  43.         writeln( 'Number of clusters on disk     : ', InsComma( NumOfClusts - 1 ) );
  44.         writeln( 'Sectors used by each FAT       : ', SectsPerFAT );
  45.         writeln( 'First root-directory sector    : ', FirstDirSect );
  46.         writeln( 'Device driver header address   : ', WrdToHex( seg( DevHeaderAddr^ ) ), ':',
  47.                                                       WrdToHex( ofs( DevHeaderAddr^ ) ) );
  48.         writeln( 'Media descriptor code          : ', WrdToHex( MediaCode ),' hex' );
  49.         write  ( 'Drive has been accessed?       : ' );
  50.  
  51.         if ( DrvAccessed = $ff ) then
  52.           writeln( 'NO' )
  53.         else
  54.           writeln( 'YES' );
  55.  
  56.         writeln( 'Next DPB address               : ', WrdToHex( NextDPBseg ), ':',
  57.                                                       WrdToHex( nextDPBofs ) );
  58.         writeln( 'Last disk cluster allocated    : ', InsComma( LastClustUsed ) );
  59.         write  ( 'Number of free clusters        : ' );
  60.  
  61.         if ( NumOfFreeClusts = 65535 ) then
  62.           writeln( 'unknown..??' )
  63.         else
  64.           writeln( InsComma( NumOfFreeClusts ) );
  65.  
  66.      end;
  67.  
  68.   GetEnter;
  69. end.